﻿using A.M.ETO;
using A.M.Storage.I_Application;
using O.M.Production.Domain.DTO;
using O.M.Production.Domain.Entity;
using O.M.Production.ErrorCodeEnum;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static O.M.Production.Domain.EnumModel;

namespace O.M.Production.Application.IService
{
    /// <summary>
    /// 内部生产接口服务
    /// </summary>
    public interface I_internal_product_Service : IBaseServices<internal_product, string>
    {
        /// <summary>
        /// 分页查询-内部生产
        /// </summary>
        /// <param name="IPName">模糊查询编号或者名称</param>
        /// <param name="pageSize">页容量</param>
        /// <param name="pageIndex">页码</param>
        /// <returns>统一返回格式</returns>
        Task<ApiResult> Get_internal_product_Page(string? IPName, Produce_Type? produce_type, int pageSize, int pageIndex);
        /// <summary>
        /// 添加-内部生产
        /// </summary>
        /// <param name="product_DTO">内部生产DTO</param>
        /// <returns>统一返回格式</returns>
        Task<ApiResult> Post_Add_internal_product(internal_product_DTO product_DTO);
        /// <summary>
        /// 批量删除-内部生产
        /// </summary>
        /// <param name="product_DTO">内部生产DTO</param>
        /// <returns>统一返回格式</returns>
        Task<ApiResult> Post_Batch_Del_internal_produc(List<internal_product_DTO> product_DTO);
        /// <summary>
        /// 修改-内部生产
        /// </summary>
        /// <param name="product_DTO">内部生产DTO</param>
        /// <returns>统一返回格式</returns>
        ApiResult Post_Upd_internal_produc(internal_product_DTO product_DTO);
        /// <summary>
        /// 返回内部生产实体
        /// </summary>
        /// <param name="internal_product_id">内部生产编号</param>
        /// <returns>统一返回格式</returns>
        Task<ApiResult> Get_ReturmModel_internal_product(string? internal_product_id);

        /// <summary>
        /// 获取生产BOM
        /// </summary>
        /// <param name="Url1">路径1</param>
        /// <param name="Url2">路径2</param>
        /// <param name="pageSize">页容量</param>
        /// <param name="pageIndex">页码</param>
        /// <returns>统一返回格式</returns>
        Task<ApiResult> Get_Produce_Bom(string? Url, int pageSize, int pageIndex);

        Task<ApiReturn<string>> GetAddXsInfor(string? id);
    }
}
